package cn.jobstart.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.jobstart.pubInter.BaseSearch;
import cn.jobstart.model.Company;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author sunke
*   @Date 2023-09-22 22:03:51
*   @description CompanySearch      企业
*/


@Data
@ApiModel("企业CompanySearch")
public abstract class CompanySearch<Sub extends CompanySearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "版本")
    private Integer versionEq;
    @ApiModelProperty(value = "企业名称")
    private String nameLike;
    @ApiModelProperty(value = "组织机构代码")
    private String tinLike;
    @ApiModelProperty(value = "企业性质 1:外资:foreign_capital,2:合资:joint_venture,3:国企:state_owned_enterprise,4:私营/民营公司:private_companies,5:上市公司:listed_company,6:外企代表处:foreign_enterprise_representing,7:政府机关:government_office,8:事业单位:public_institutions,9:非盈利机构:non_profit_organization,10:其他性质:other_nature")
    private List natureIn;
    @ApiModelProperty(value = "企业规模 9:10人以下,49:10～50人,199:50～200人,499:200～500人,999:500～1000人,1000:1000人以上")
    private List scaleIn;
    @ApiModelProperty(value = "公司简介")
    private String introLike;
    @ApiModelProperty(value = "官网")
    private String websiteLike;
    @ApiModelProperty(value = "省")
    private String provinceLike;
    @ApiModelProperty(value = "城市")
    private String cityLike;
    @ApiModelProperty(value = "区")
    private String areaLike;
    @ApiModelProperty(value = "所在行业")
    private String industryLike;
    @ApiModelProperty(value = "公司电话")
    private String telLike;
    @ApiModelProperty(value = "公司地址")
    private String addressLike;
    @ApiModelProperty(value = "传真")
    private String faxLike;
    @ApiModelProperty(value = "电子邮箱")
    private String emailLike;
    @ApiModelProperty(value = "渠道来源")
    private List channelIn;
    @ApiModelProperty(value = "来源企业ID")
    private String sourceCompanyIdEq;
    @ApiModelProperty(value = "行业ID")
    private String industryIdEq;
    @ApiModelProperty(value = "是否加入es 1:是:Y,0:否:N")
    private List esFlagIn;
    @ApiModelProperty(value = "公司详情")
    private String infoLike;

    public CompanySearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return Company.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return Company.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return Company.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return Company.ID;
    }

    @Override
    public String  toString() {
        return "CompanySearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(Company.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(Company.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(Company.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(Company.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(Company.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setVersionEq(Integer versionEq){
        this.versionEq = versionEq;
        setEqualField(Company.VERSION, versionEq);
        return getSubThis();
    }
    public Sub setNameLike(String nameLike){
        this.nameLike = nameLike;
        setLikeField(Company.NAME, nameLike);
        return getSubThis();
    }
    public Sub setTinLike(String tinLike){
        this.tinLike = tinLike;
        setLikeField(Company.TIN, tinLike);
        return getSubThis();
    }
    public Sub setNatureIn(List natureIn){
        this.natureIn = natureIn;
        setInField(Company.NATURE, natureIn);
        return getSubThis();
    }
    public Sub setScaleIn(List scaleIn){
        this.scaleIn = scaleIn;
        setInField(Company.SCALE, scaleIn);
        return getSubThis();
    }
    public Sub setIntroLike(String introLike){
        this.introLike = introLike;
        setLikeField(Company.INTRO, introLike);
        return getSubThis();
    }
    public Sub setWebsiteLike(String websiteLike){
        this.websiteLike = websiteLike;
        setLikeField(Company.WEBSITE, websiteLike);
        return getSubThis();
    }
    public Sub setProvinceLike(String provinceLike){
        this.provinceLike = provinceLike;
        setLikeField(Company.PROVINCE, provinceLike);
        return getSubThis();
    }
    public Sub setCityLike(String cityLike){
        this.cityLike = cityLike;
        setLikeField(Company.CITY, cityLike);
        return getSubThis();
    }
    public Sub setAreaLike(String areaLike){
        this.areaLike = areaLike;
        setLikeField(Company.AREA, areaLike);
        return getSubThis();
    }
    public Sub setIndustryLike(String industryLike){
        this.industryLike = industryLike;
        setLikeField(Company.INDUSTRY, industryLike);
        return getSubThis();
    }
    public Sub setTelLike(String telLike){
        this.telLike = telLike;
        setLikeField(Company.TEL, telLike);
        return getSubThis();
    }
    public Sub setAddressLike(String addressLike){
        this.addressLike = addressLike;
        setLikeField(Company.ADDRESS, addressLike);
        return getSubThis();
    }
    public Sub setFaxLike(String faxLike){
        this.faxLike = faxLike;
        setLikeField(Company.FAX, faxLike);
        return getSubThis();
    }
    public Sub setEmailLike(String emailLike){
        this.emailLike = emailLike;
        setLikeField(Company.EMAIL, emailLike);
        return getSubThis();
    }
    public Sub setChannelIn(List channelIn){
        this.channelIn = channelIn;
        setInField(Company.CHANNEL, channelIn);
        return getSubThis();
    }
    public Sub setSourceCompanyIdEq(String sourceCompanyIdEq){
        this.sourceCompanyIdEq = sourceCompanyIdEq;
        setEqualField(Company.SOURCE_COMPANY_ID, sourceCompanyIdEq);
        return getSubThis();
    }
    public Sub setIndustryIdEq(String industryIdEq){
        this.industryIdEq = industryIdEq;
        setEqualField(Company.INDUSTRY_ID, industryIdEq);
        return getSubThis();
    }
    public Sub setEsFlagIn(List esFlagIn){
        this.esFlagIn = esFlagIn;
        setInField(Company.ES_FLAG, esFlagIn);
        return getSubThis();
    }
    public Sub setInfoLike(String infoLike){
        this.infoLike = infoLike;
        setLikeField(Company.INFO, infoLike);
        return getSubThis();
    }
}